/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   14-7-28 上午11:58 Created by dwzhang
 */
package com.jade.framework.base.comm;

import java.util.Collection;

import org.apache.commons.logging.Log;

/**
 * 协议对象。
 *
 * @author dwzhang
 * @version 1.0 14-7-28 上午11:58
 */
public interface Protocol
{
    /**
     * 返回连接过滤器。
     *
     * @return 连接过滤器列表。
     */
    public Collection<ConnectionFilter> getConnectionFilters();

    //    /**
    //     * 返回连接处理器。
    //     *
    //     * @return 连接处理器。
    //     */
    //    public ConnectHandler getConnectHandler();
    //
    //    /**
    //     * 返回消息处理器。
    //     *
    //     * @return 消息处理器。
    //     */
    //    public MessageHandler getMessageHandler();
    //
    //    /**
    //     * 返回错误处理器。
    //     *
    //     * @return 错误处理器。
    //     */
    //    public ErrorHandler getErrorHandler();

    /**
     * 返回协议处理器。
     *
     * @return 协议处理器。
     */
    public <T extends ProtocolHandler> T getProtocolHandler();

    /**
     * 接收到的消息编解码器。
     *
     * @return 消息编解码器。
     */
    public MessageCodec getMessageCodec();

    /**
     * 返回协议配置。
     *
     * @return 协议配置。
     */
    public ProtocolConfiguration getConfiguration();

    /**
     * 创建连接Session。
     *
     * @return 连接Session.
     */
    public ProtocolSession createSession(ProtocolTransport transport);

    /**
     * 获取协议日志器。
     *
     * @return 协议日志器。
     */
    public Log getLog();
}
